import axios from 'axios';

// 创建axios实例
const request = axios.create({
  baseURL: '/api', // API基础URL，与后端的context-path对应
  timeout: 10000, // 请求超时时间
  headers: {
    'Content-Type': 'application/json',
  },
});

// 请求拦截器
request.interceptors.request.use(
  (config) => {
    // 从localStorage中获取token
    const token = localStorage.getItem('token');
    if (token) {
      // 设置Authorization头
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    // 处理请求错误
    return Promise.reject(error);
  }
);

// 响应拦截器
request.interceptors.response.use(
  (response) => {
    // 对响应数据做处理
    const res = response.data;
    // 如果返回的code不是200，视为错误
    if (res.code !== 200) {
      // 处理错误情况
      console.error('API Error:', res.message);
      return Promise.reject(new Error(res.message || '请求失败'));
    } else {
      return res.data; // 只返回data部分
    }
  },
  (error) => {
    // 处理响应错误
    console.error('Response Error:', error);
    // 处理token过期或未授权的情况
    if (error.response?.status === 401) {
      // 清除本地存储中的token
      localStorage.removeItem('token');
      localStorage.removeItem('userInfo');
      // 跳转到登录页
      window.location.href = '/login';
    }
    return Promise.reject(error);
  }
);

export default request;